package com.example.mybatisplusservice.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.mybatisplusservice.User;

import java.util.List;
import java.util.concurrent.CompletableFuture;

/**
 * @author wuxinxin
 */
public interface UserService extends IService<User> {
    List<User> getOne(Integer userId);

    IPage<User> list(Integer page, Integer pageSize);


    IPage<User> list2(Integer page, Integer pageSize,Integer childrenId);


    void addUser() throws InterruptedException;

    void error() throws InterruptedException;

    CompletableFuture errorOk() throws InterruptedException;

    void addUserSetp(Integer id,Integer userId, Integer childrenId,Boolean isRollback);


    /**
     * 测试外部方法不加事务，内部多个方法分别独立事务的问题
     *
     * 测试结果： 外部方法不加事务，内部子方法事务是独立提交和回滚的
     */
    void testTransactional1();


    /**
     * 测试mybatis plus batch操作是否支持事务
     *
     * 测试结果： 不支持事务
     */
    void testTransactional2();
}
